36bf1325592d13e6821a899bafac770448014792,src/main/org/deidentifier/arx/metric/v2/MetricSDNMPublisherPayout.java,MetricSDNMPublisherPayout,getInformationLossInternal,#Transformation#HashGroupify#,187

Before Change


                double adversarySuccessProbability = this.getSuccessProbability(entry);
                double informationLoss = this.getEntropyBasedInformationLoss(transformation, entry);
                real += !entry.isNotOutlier ? 0d : entry.count * modelRisk.getExpectedPublisherPayout(informationLoss, adversarySuccessProbability);
                bound += entry.count * modelRisk.getExpectedPublisherPayout(informationLoss, 0d);
            }
            entry = entry.nextOrdered;
        }
        
        // Invert
        real = this.getNumTuples() * this.config.getPublisherBenefit() - real;
        bound = this.getNumTuples() * this.config.getPublisherBenefit() - bound;
        
        // Return
        return super.createInformationLoss(real, bound);

After Change


                double adversarySuccessProbability = this.getSuccessProbability(entry);
                double informationLoss = this.getEntropyBasedInformationLoss(transformation, entry);
                double realPayout = modelRisk.getExpectedPublisherPayout(informationLoss, adversarySuccessProbability);
                double boundPayout = modelRisk.getExpectedPublisherPayout(informationLoss, 0d);
                real += !entry.isNotOutlier ? (sFactor * entry.count * maxPayout) : 
                                              (gFactor * entry.count * (maxPayout - realPayout));
                bound += gFactor * entry.count * (maxPayout - boundPayout);
            }
            entry = entry.nextOrdered;
        }